#ifndef LINK_LIST_H__
#define LINK_LIST_H__

#define ElemType int
#define List LinkList

struct linknode
{
    ElemType data;
    struct linknode * next;
};

typedef struct linknode LinkNode;
typedef struct linknode *LinkList; 

/**
 * @brief 单链表
 */

void initLinkList(LinkList *L);
void destroyLinkList(LinkList *L);
void clearLinkList(LinkList *L);
int linklistIsEmpty(LinkList *L);
int linklistLength(LinkList *L);
int getLinkListElem(LinkList *L, int i, ElemType *e);
int locateLinkListElem(LinkList *L, ElemType e);
int priorLinkListElem(LinkList *L, ElemType cur_e, ElemType *pre_e);
int nextLinkListElem(LinkList *L, ElemType cur_e, ElemType *next_e);
int linklistInsert(LinkList *L, int i, ElemType e);
int linklistDelete(LinkList *L, int i, ElemType *e);
void traverseLinkList(LinkList *L);


#endif